package pers.elonnsu.springbootmall.service;

import com.github.pagehelper.PageInfo;
import pers.elonnsu.springbootmall.model.pojo.Category;
import pers.elonnsu.springbootmall.model.request.AddCategoryReq;
import pers.elonnsu.springbootmall.model.vo.CategoryVO;

import java.util.List;

public interface CategoryService {
    /**
     * 后台：增加目录分类
     *
     * @param addCategoryReq name 目录名
     *                       type 目录层级
     *                       parentId 父目录的ID
     *                       orderNum 排序
     */
    public void addCategory(AddCategoryReq addCategoryReq);

    /**
     * 后台：增加目录分类
     *
     * @param updateCategory 需更新的对象
     */
    public void update(Category updateCategory);

    /**
     * 后台：删除目录分类
     *
     * @param id 目录分类编号
     */
    public void deleteById(Integer id);

    /**
     * 后台：展示分类目录列表（平铺）
     *
     * @param pageNum  页号
     * @param pageSize 每页最大数据量
     * @return 包含分类目录的分页对象
     */
    public PageInfo<Category> listCategoryForAdmin(Integer pageNum, Integer pageSize);

    /**
     * 前台：展示分类目录列表（递归）
     *
     * @return 基于递归链表的分类目录集合
     */
    public List<CategoryVO> listCategoryForCustomer(Integer parentId);
}
